---
title: lefthook
description: Jalankan Ultracite secara otomatis pada file Git yang telah distage menggunakan lefthook
---

Ultracite menyediakan integrasi mulus dengan [lefthook](https://lefthook.dev/), pengelola Git hooks yang cepat dan kuat. Integrasi ini secara otomatis menyiapkan pre-commit hook untuk memastikan kode Anda diformat dengan benar sebelum setiap commit.

## Apa itu lefthook?

lefthook adalah pengelola Git hooks native yang cepat untuk proyek Node.js dan Go. Dirancang untuk sederhana, cepat, dan kuat, memungkinkan Anda mengelola Git hooks di seluruh tim dengan file konfigurasi yang dapat di-commit ke repositori Anda.

## Bagaimana Ultracite Menggunakan lefthook

Saat Anda menginisialisasi Ultracite di proyek Anda, ia dapat secara otomatis mengonfigurasi lefthook untuk menjalankan pemformatan kode sebelum setiap commit. Ini memastikan bahwa:

- Semua kode yang di-commit mengikuti standar format yang konsisten
- Pemeriksaan kualitas kode ditegakkan secara otomatis
- Anggota tim tidak perlu mengingat untuk memformat kode secara manual
- Repositori Anda mempertahankan gaya kode yang bersih dan konsisten

## Perilaku Pre-commit Hook

Integrasi lefthook Ultracite membuat pre-commit hook yang menjalankan perintah berikut:

```bash
npx ultracite fix
```

Perintah ini:
- Menjalankan linter dan formatter Biome pada basis kode Anda
- Secara otomatis memperbaiki masalah pemformatan bila memungkinkan
- Memastikan semua file yang distage memenuhi standar kode proyek Anda
- Mencegah commit yang akan memperkenalkan inkonsistensi pemformatan

## Penyiapan Otomatis

Selama proses inisialisasi (`ultracite init`), jika Anda memilih opsi lefthook, Ultracite:

1. **Menginstal lefthook**: Menambahkan lefthook sebagai dependensi pengembangan ke proyek Anda
2. **Menginisialisasi lefthook**: Menjalankan `lefthook install` untuk menyiapkan Git hooks
3. **Membuat Konfigurasi**: Menyiapkan file `lefthook.yml` dengan perintah pemformatan
4. **Menangani Pengaturan yang Ada**: Jika Anda sudah mengonfigurasi lefthook, ia memperbarui konfigurasi yang ada alih-alih menimpanya

## Detail Integrasi

Integrasi lefthook mencakup beberapa fitur cerdas:

### Manajemen Dependensi
- Secara otomatis menginstal lefthook sebagai dependensi dev menggunakan package manager proyek Anda
- Menggunakan perintah package manager yang sesuai (`npm install -D`, `yarn add -D`, `pnpm add -D`, dll.)
- Menjalankan `lefthook install` untuk menginisialisasi Git hooks

### Manajemen Konfigurasi
- **Proyek Baru**: Membuat file `lefthook.yml` baru dengan perintah `ultracite fix`
- **Proyek yang Ada**: Menambahkan perintah Ultracite ke konfigurasi lefthook Anda yang sudah ada, menjaga hook lain yang mungkin sudah Anda konfigurasi

### Struktur File
Integrasi membuat atau memodifikasi:
```
lefthook.yml    # Contains the formatting command configuration
```

## Manfaat

- **Konsistensi Tim**: Setiap anggota tim menerapkan pemformatan yang sama secara otomatis
- **Tanpa Konfigurasi**: Berfungsi langsung dengan pengaturan default yang masuk akal
- **Performa Cepat**: lefthook ditulis dalam Go dan sangat cepat
- **Fleksibilitas**: Mudah diperluas dengan perintah dan hook tambahan
- **Lintas platform**: Bekerja konsisten di berbagai sistem operasi

## Integrasi Alur Kerja

Integrasi lefthook menyatu mulus ke dalam alur kerja pengembangan Anda:

1. **Pengembang membuat perubahan** pada file kode
2. **Menandai file untuk commit** dengan `git add`
3. **Mencoba melakukan commit** dengan `git commit`
4. **lefthook memicu** pre-commit hook secara otomatis
5. **Ultracite menjalankan** dan memformat file yang distage
6. **Commit dilanjutkan** jika pemformatan berhasil, atau **gagal** jika ada masalah yang tidak dapat diperbaiki secara otomatis

## Kustomisasi

Meskipun Ultracite menyiapkan default yang masuk akal, Anda dapat menyesuaikan perilaku:

- Modifikasi `lefthook.yml` untuk menambahkan perintah atau hook tambahan
- Konfigurasi pengaturan Biome untuk menyesuaikan aturan pemformatan
- Tambahkan pemeriksaan pre-commit lain bersamaan dengan pemformatan Ultracite
- Gunakan fitur eksekusi paralel dan logika kondisional lefthook yang kuat

## Pemecahan Masalah

### Hook Tidak Berjalan
Jika pre-commit hook tidak berjalan:
- Pastikan lefthook terinstal: `npm ls lefthook`
- Periksa bahwa `lefthook.yml` ada dan berisi perintah ultracite
- Verifikasi Git hooks diaktifkan di repositori Anda
- Jalankan `lefthook install` untuk menginstal ulang hooks

### Masalah Izin
lefthook menangani izin Git hook secara otomatis, tetapi jika Anda mengalami masalah:
- Coba jalankan `lefthook install` lagi
- Periksa bahwa konfigurasi Git Anda mengizinkan hooks

### Melewati Hooks
Dalam kasus langka di mana Anda perlu melewati pre-commit hook:
```bash
git commit --no-verify
```

Gunakan ini secara hemat, karena ini melewati pemformatan otomatis yang menjaga konsistensi basis kode Anda.

## Contoh Konfigurasi

Berikut tampilan konfigurasi `lefthook.yml`:

```yaml
pre-commit:
  jobs:
    - run: npx ultracite fix
      glob: 
        - "*.js"
        - "*.jsx"
        - "*.ts"
        - "*.tsx"
        - "*.json"
        - "*.jsonc"
        - "*.css"
      stage_fixed: true
```

Konfigurasi ini:
- Hanya berjalan pada file JavaScript, TypeScript, JSON, dan CSS
- Secara otomatis men-stage file yang diperbaiki oleh formatter
- Menggunakan sintaks `jobs` yang efisien untuk performa yang lebih baik

Anda dapat memperluas konfigurasi ini untuk menyertakan pekerjaan tambahan:

```yaml
pre-commit:
  jobs:
    - run: npx ultracite fix
      glob: 
        - "*.js"
        - "*.jsx"
        - "*.ts"
        - "*.tsx"
        - "*.json"
        - "*.jsonc"
        - "*.css"
      stage_fixed: true
    - run: npm test
      glob: "*.{js,ts}"
    - run: tsc --noEmit
      glob: "*.{ts,tsx}"
```